今天來講 Docker,你可能會想說奇怪,為什麼會突然提到 Docker 呢?
因為在每個專案、每個模型所要建立的環境都不同,而我們可能會遇到作業系統版本不同、Kernel不同、環境變數不同或者是套件版本不一樣...等問題。
假如我們用 tensorflow 1.10 開發了一個文本摘要器。之後我們想要使用 tensorflow 2.0(假設)支持的遷移學習來進行情感分析。
這個時候就可以用 Docker 建立獨立的環境,以免不被外界影響。使用 Docker 並將他們放在不同的 container 中,就不用擔心會破壞應用程序了。
都2021年了,總不可能還在繼續用虛擬機解決吧?
Docker 與虛擬機同為虛擬化技術,他們的功能相似,同樣都能用來獨立作業,讓主環境與部署的程式分離。然而虛擬機器因為需要模擬出整套作業系統才能運行應用程式,導致其出現啟動慢、佔較大記憶體等問題;若要同時執行多個虛擬機顯然會降低系統成效。
因此, Docker 才逐漸成為現今的主流。
Docker 運行應用程式的環境被稱作 容器 (container)。相較於虛擬機的虛擬化是實作在硬體層之上,container 則是在作業系統層上虛擬化,由於不需要另外安裝作業系統,因此建立 container 所需要的硬碟容量可以大幅降低,啟動速度也能夠更快。
主要有3個部份:
Image 是一個唯讀的環境模版,涵蓋 Container 內的所有程式(包括應用程式、函式庫、環境設定檔),可用來重複建立 Container 。而 Image 可以透過撰寫由命令行構成的 Dockerfile 建立,或是從 Docker hub 下載已經做好的 Image 來使用。
Container 是根據 Image 建立的執行實例。一個 Image 可以創造出多個 Container ,它可以被啟動、開始、停止、刪除。每個 Cotainer 都是互相獨立的平台。
Repository 是存放 Image 的地方,而其中最大的公開 Repository 便是上面提到過的 Docker hub,它存放了大量的 Image 供使用者下載,我們可以在上面找到各式各樣現成實用的 Image 。其概念與 Github 相似,使用者可在上面建立自己的 Repository 並透過 push、pull 等方法進行上傳、存取。
今天先簡單的介紹到這裡,明天來介紹如何安裝Docker。